package com.hsh.erp.utils;

import com.hsh.erp.constants.SpecialSymbolConstants;
import org.apache.logging.log4j.util.Strings;

import java.math.BigDecimal;

/**
 * 数据处理工具类
 */
public class DataUtils {

    /**
     * 移除字符串中的空格和特殊字符
     *
     * @param str
     * @return
     */
    public static String removeSpaceAndSymbols(String str) {
        if (Strings.isBlank(str)) {
            return str;
        }
        return str.replaceAll("\\s", "")
                .replaceAll(":", "")
                .replaceAll("·", "");
    }

    /**
     * 判断 bigStr 中是否包含 smallStr
     *
     * @param bigStr
     * @param smallStr
     * @return
     */
    public static boolean isInclude(String bigStr, String smallStr) {
        if (bigStr == null || Strings.isBlank(smallStr)) {
            return false;
        }
        return bigStr.contains(smallStr);
    }

    /**
     * 判断 str 中是否包含 args 中的元素，任意一个
     *
     * @param args
     * @param str
     * @return 包含 返回 true，不包含 返回 false
     */
    public static boolean isInclude(String[] args, String str) {
        for (String s : args) {
            if (DataUtils.isInclude(str, s)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 逐一 str 和 split[i]
     * split[i] == str，则返回true,反之返回false
     *
     * @param args
     * @param str
     * @return 包含 返回 true，不包含 返回 false
     */
    public static boolean equals(String[] args, String str) {
        if (args == null || str == null) {
            return false;
        }
        for (String s : args) {
            if (str.equals(s)) {
                return true;
            }
        }
        return false;
    }

    /**
     * args 用 ',' 拆分成 split[]
     * 逐一 str 和 split[i]
     * split[i] == str，则返回true,反之返回false
     *
     * @param args
     * @param str
     * @return 包含 返回 true，不包含 返回 false
     */
    public static boolean isIncludeEquals(String args, String str) {
        if (args == null || str == null) {
            return false;
        }
        return equals(args.split(SpecialSymbolConstants.COMMA), str);
    }

    /**
     * 判断 str 中是否包含 args 中的元素，任意一个
     *
     * @param args
     * @param str
     * @return 不包含 返回 true，包含 返回 false
     */
    public static boolean isNotInclude(String[] args, String str) {
        return !DataUtils.isInclude(args, str);
    }


    /**
     * 两个字符串，通过 , 拼接在一起
     *
     * @param firstStr
     * @param secondStr
     * @return 不包含 返回 true，包含 返回 false
     */
    public static String concatString(String firstStr, String secondStr) {
        if (Strings.isBlank(secondStr)) {
            return firstStr;
        }
        if (Strings.isBlank(firstStr)) {
            return secondStr;
        }

        return firstStr + SpecialSymbolConstants.COMMA + secondStr;
    }

    /**
     * 判断 bigDecimal 是否 为 空或0
     *
     * @param bigDecimal
     * @return
     */
    public static boolean isBlankOrZero(BigDecimal bigDecimal) {
        return bigDecimal == null || BigDecimal.ZERO.compareTo(bigDecimal) == 0;
    }


    /**
     * 判断 bigDecimal 是否 不为 空或0
     *
     * @param bigDecimal
     * @return
     */
    public static boolean isNotBlankOrZero(BigDecimal bigDecimal) {
        return !isBlankOrZero(bigDecimal);
    }

}
